Method and apparatus for initiating and managing chat sessions

ABSTRACT

During a communication session facilitated by a first communication service between a first device and a second device, a processor may receive a request to execute a feature not supported by the first communication service. The processor may also identify a second communication service that does support the feature. Further, the processor may then cause the communication session to transition from the first communication service to the second communication service.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.16/173,960 filed Oct. 29, 2018, entitled “METHOD AND APPARATUS FORINITIATING AND MANAGING CHAT SESSIONS,” which is a continuation of U.S.application Ser. No. 14/492,719, filed Sep. 22, 2014, entitled “METHODAND APPARATUS FOR INITIATING AND MANAGING CHAT SESSIONS,” which is acontinuation of U.S. application Ser. No. 12/549,798, filed on Aug. 28,2009, entitled “METHOD AND APPARATUS FOR INITIATING AND MANAGING CHATSESSIONS,” all of which are incorporated herein by reference in theirentireties.

FIELD OF THE INVENTION

The present invention relates generally to communications. Moreparticularly, this invention relates to chat systems.

BACKGROUND

A variety of communication methods by the use of computer networks havebeen developed in recent years in accordance with the growth of theInternet. Such methods include chat systems, multi-user and real-timecommunication methods. Chat systems have widely replaced traditionaltelephones and electronic mail. A chat system is a means through whichtyped conversation is sent from a sender to a recipient via a computernetwork, namely the Internet, almost instantly.

A client computer may be linked to a network through a server computer.Such a client computer running a software application allowing one userto chat with another user on the same network can be termed a “chatclient.” “A virtual space” may be defined as the chat network created bythe users chatting via chat clients and matching servers (also referredto as chat servers). A conversation forum, or channel, is createdbetween the users chatting via the chat clients. Thus, a “chat system”is a communication method characterized by chat users who share numerousvirtual spaces.

A chat user is identified by a user-selected chat service name. A chatuser may chat by multiple chat services and therefore can have multipleservice names, each representing an account (e.g., chat service account)associated with a chat server. A user may have multiple chat servicesthat are associated with the same chat server (e.g., a mobile accountand a non-mobile account). Unfortunately, when a user wishes to send achat message to another user having multiple chat services, the sendermust determine which chat service to use to send the message, and/ordetermine which chat service the receiver is logged into. In addition,certain types of chats (e.g., video chat) require both sender's deviceand receiver's device to have certain capabilities (e.g., camera). As aresult, when a sender initiates such a chat, the sender must determineand select a receiver's chat service that supports such a capability.

SUMMARY OF THE DESCRIPTION

Method and apparatus for initiating and managing a chat session aredescribed herein. According to one aspect of the invention, useractivities with respect to the data processing system are monitored,including user activities that are unrelated to chat services. Inresponse to a request to initiate a chat session between a local userand a remote user, a first chat service account is selected from a listof chat service accounts associated with the remote user based on themonitored user activities. A chat session is initiated using theselected first chat service account of the remote user and a second chatservice account selected for the local user. Certain information isdisplayed within a chat window indicating that the chat session isconducted between the first and second chat service accounts.

According to another aspect of the invention, in response to a requestto add a remote user to a chat room by selecting a first chat serviceaccount of the remote user, it is determined whether the first chatservice account is compatible with a chat service provider hosting thechat room. If the first chat service account is incompatible with thechat service provider, a second chat service account is automaticallyselected from a list of a plurality of chat service accounts associatedwith the remote user. An invitation is then sent to the remote user viathe second chat service account to invite the remote user to participatein the chat room. Thereafter, an identifier of the second chat serviceaccount is displayed within a chat window associated with the chat room.

According to another aspect of the invention, a chat session isinitiated between a local user and a remote user, where each of thelocal user and the remote user has multiple chat service accountsassociated with one or more chat service providers. In response to arequest to enable a predetermined chat feature within the chat sessionthat is not supported by at least one chat service account used toinitiate the chat session, an alternative chat service account isautomatically selected from the multiple chat service accountsassociated with the same owner of the at least one chat service accountthat does not support the predetermined feature. The chat session istransitioned to be used with the selected alternative chat serviceaccount and the predetermined feature is enabled within the chatsession.

According to another aspect of the invention, in response to request forstarting a group video chat among a plurality of members, it isdetermined whether each member has a chat service account under the samechat service provider that supports the group video chat. Multiple groupvideo chats are initiated among the members if not all members have achat service account under the same chat service provider, where eachmember has at least one chat service account to participate at least oneof the multiple group video chat. After the multiple group video chatsstarted, the multiple group video chats are merged into one group videochat by direct communications among the members without involving a chatserver that initiates the multiple group video chats.

According to another aspect of the invention, a request is received froma first host member of a group chat session indicating that the firsthost member is exiting the group chat session. In response to therequest, a negotiation is performed among remaining members of the groupchat session to identify and select a second host member to continuehosting the group chat session. The group chat session is transitionedto be hosted by the second host member without terminating the groupchat session. Thereafter, information is displayed within a chat windowof the group chat session indicating that the group chat session is nowhosted by the second host member.

Other features of the present invention will be apparent from theaccompanying drawings and from the detailed description which follows.

BRIEF DESCRIPTION OF THE DRAWINGS

The present invention is illustrated by way of example and notlimitation in the figures of the accompanying drawings in which likereferences indicate similar elements.

FIG. 1 is a block diagram illustrating a network environment forsupporting chat communications according to one embodiment of theinvention.

FIG. 2 is a block diagram illustrating a chat client according to oneembodiment of the invention.

FIGS. 3A-3D are screenshots illustrating an example of a graphical userinterface (GUI) of a chat client according to one embodiment of theinvention.

FIG. 4 is a flow diagram illustrating a method for initiating a chatsession according to one embodiment of the invention.

FIG. 5 is a flow diagram illustrating a method for initiating a chatsession according to another embodiment of the invention.

FIG. 6 is a flow diagram illustrating a method for initiating a chatsession according to another embodiment of the invention.

FIG. 7 is a flow diagram illustrating a method for initiating a chatsession according to another embodiment of the invention.

FIG. 8 is a flow diagram illustrating a method for initiating a chatsession according to another embodiment of the invention.

FIG. 9 is a block diagram of a data processing system, which may be usedwith one embodiment of the invention.

DETAILED DESCRIPTION

Method and apparatus for initiating and managing chat sessions aredescribed herein. In the following description, numerous details are setforth to provide a more thorough explanation of embodiments of thepresent invention. It will be apparent, however, to one skilled in theart, that embodiments of the present invention may be practiced withoutthese specific details. In other instances, well-known structures anddevices are shown in block diagram form, rather than in detail, in orderto avoid obscuring embodiments of the present invention.

Reference in the specification to “one embodiment” or “an embodiment”means that a particular feature, structure, or characteristic describedin connection with the embodiment is included in at least one embodimentof the invention. The appearances of the phrase “in one embodiment” invarious places in the specification do not necessarily all refer to thesame embodiment.

According some embodiments, a chat client is configured to intelligentlydetermine the best chat service among multiple chat services of senderand/or receiver using information collected from non-instant messagingactivities, such as, for example, user activities. In addition, the chatclient is configured to display the selected chat services for both thesender and the receiver in a graphical user interface (GUI), such that auser can easily find out which services of the local user and theopposing party (e.g., remote user) are being used. Further, when a chathaving a particular feature (e.g., video) is initiated, a chat client isconfigured to automatically select a chat service for both the senderand the receiver that support such a feature (e.g., a sender andreceiver equipped with a camera).

According to another aspect, when a user selects a chat service of acontact or buddy to invite the contact into a current chat room, if theselected chat service is incompatible with the current chat room and thecontact has another chat service that is compatible with the currentchat room, the chat client automatically selects the alternative chatservice of the contact to invite the contact to join the current chatroom.

Further, when a group video chat is initiated, if not all members have achat service under the same chat service provider, multiple group videochats may be initiated. Thereafter, multiple group video chats areconverged into one by direct communications with the members, forexample, using point-to-point communications protocols.

Furthermore, during a group chat session hosted by a host member, whenthe host member drops out of the group chat, renegotiation among theremaining members is performed to identify and select a new host memberto continue hosting the group chat session.

FIG. 1 is a block diagram illustrating a network environment forsupporting chat communications according to one embodiment of theinvention. Referring to FIG. 1, network environment 100 includes one ormore chat servers 101-102 for providing chat services to one or moreclient systems 104-105 over a network 103. Chat servers 101-102 may beany kind of chat servers that provide instant messaging services, suchas, for example, Apple iChat™, AOL instant messenger (AIM), andMicrosoft MSN instant messenger, etc. Client systems 104-105 may be anykind of computing devices, such as, for example, laptop or desktopcomputers, personal digital assistants (PDAs), cellular phones, etc.

Each of the client systems 104-105 includes a chat client application(e.g., chat clients 106-107). A chat client communicates between aclient system and a chat server to facilitate chat communications andpresence state updates. Additionally, each of client systems 104-105 mayinclude multiple chat clients or multiple instances of a chat client,where each chat client supports chat communications via a different chatservice provider (e.g., AIM or iChat). Further, a chat client may be astand-alone application or may be integrated into an operating system ofa client system or into another application executing on the clientsystem, such as a web browser. For example, a chat client may be aniChat™ client application available by Apple Inc. of Cupertino, Calif.

For example, some of client systems 104-105 can allow users tocommunicate via voice communications (e.g., telephonic communicationsand voicemails), e-mails, and SMS (short message service) textmessaging. Some communications devices can be loaded with instantmessaging applications (also referred to as chat applications), such asiChat™ available by Apple Inc. of Cupertino, Calif. These applicationscan allow users to send real-time communications requests (e.g., text,audio, and/or video) to each other.

In facilitating chat communications between client systems, chat servers101-102 may support chat communications in multiple formats including,but not limited to, chat rooms, instant messaging, IRC, and textmessaging via multiple types of media including, but not limited to,text, voice, graphics, video, and file transfer.

In addition, in facilitating chat communications between client systems,chat servers 101-102 may support monitoring the presence state of eachuser currently logged in through a chat client and distributing thepresence state of each user to other users logged in through other chatclients. For example, the presence of the user logged in at clientsystem 104 may be broadcast via one of chat servers 101-102 to clientsystem 105 because the users logged in at these client systems haverequested to monitor the presence of the user logged in at client system104.

According to one embodiment, a chat client is configured tointelligently determine the best chat service among multiple chatservices of sender and/or receiver using information collected fromnon-instant messaging activities, such as, for example, user activities.For example, if a local user just finished a phone call with a mobilephone of a remote user, when a new chat session is initiated with theremote user, the chat client of the local user may send a chat messageto the mobile phone of the remote user as an SMS message because mostlikely the remote user is with the mobile phone. Other events that maybe used to infer which account to use includes: most recently logged in,most recently changed user status (e.g., available vs. away, updatedstatus message), or time of day (e.g., use work account between 9:00 amto 5:00 pm).

In addition, the chat client is configured to display the selected chatservices for both the sender (e.g., local user or source) and thereceiver (e.g., remote user or destination) in a graphical userinterface (GUI), such that a user can easily find out which services ofthe user and the opposing party are being used. That is, the chat clientis configured to display not only the chat service for the receiver, butalso the sender, such that when there is a change in chat service(either automatically or manually), the user of the chat client wouldknow which chat services are currently used for both parties. This isuseful when a chat session is switched from one chat service to anotherautomatically as described below. The displayed information may alsoinclude other information, such as, for example, information indicatingwhether certain feature such as encryption are enabled. Otherinformation with respect to a user can also be shown, such as, forexample, recent online activities (e.g., posting photos to an onlinesocial network), capabilities such as audio or video chat, filetransfer, screen sharing, etc.

Further, when a chat session having a particular feature (e.g., video)is initiated, a chat client is configured to automatically select a chatservice for the sender and/or the receiver that support such a feature(e.g., a sender and receiver equipped with a camera). For example, if alocal user has a desktop and a laptop, where only the laptop is equippedwith a camera, when a video chat is initiated, the chat client mayselect a chat service (also referred to as a chat service account)associated with the laptop to initiate the chat session since thedesktop may not have a camera equipped in this example. Similarly, thechat client may also select a chat service of the remote user thatsupports the video chat. Such selections may be performed by a chatclient automatically without user intervention. In another example,during a non-video chat, if the local user decides to switch to a videochat, the chat client of the local user may automatically select a chatservice of the remote user that supports video chat and transition thecurrent chat into a video chat, if the current chat service of theremote user does not support the video chat. In addition, to theservices themselves, the client software and/or hardware being used byeach user may have to have compatible capabilities. For example, someslower machines and/or software on an older operating system (OS) maynot have the capability to do multi-person video chatting. These factorsare also considered when selecting a chat service.

According to another embodiment, when a user selects a chat service of acontact or buddy to invite the contact to participate in a current chatroom, if the selected chat service is incompatible with the current chatroom and the contact has another chat service that is compatible withthe current chat room, the chat client automatically selects thealternative chat service of the contact to invite the contact to jointhe current chat room. For example, during a current chat sessionassociated with AIM, a local user drags and drops a graphicalrepresentation such as an icon representing a chat service associatedwith a remote user into the current chat room. If the selected chatservice of the remote user is associated with another chat system suchas iChat™ and the remote user also has alternative chat serviceassociated with AIM, the chat client automatically selects the chatservice associated with AIM to invite the remote user to join thecurrent chat session. As a result, when a remote user has many chatservices, the local user does not have to remember which chat service iscompatible with a chat system of a current chat room. The local user cansimply drags one of the chat services of the remote user into thecurrent chat room and the chat client will take care of the rest toproperly identify a chat service of the remote user for the purpose ofinviting the remote user to join the current chat room.

Alternatively, according to an alternative embodiment, a local user cansimply drag a graphical representation (e.g., icon) of a remote userinto a current chat room. The chat client is configured to intelligentlydetermine and select a chat service account belonging to the remote userthat is compatible with the service of the current chat room. That is,this makes the choice of services and accounts generally unnecessary forusers. The chat client can indicate what it is doing for informationalpurposes. As a result, a user will interact with representations ofpeople, rather than representations of people's chat service accounts.However, the default selection by the chat client may be overridden byuser's customized settings or preferences.

Further, according to another embodiment, when a group video chat isinitiated, if not all members have a chat service under the same chatservice provider, multiple group video chats may be initiated.Thereafter, multiple group video chats are merged into one by directcommunications with the members, for example, using point-to-pointcommunications protocols. For example, user A wants to start a groupvideo chat session with users B and C. While user A has a chat serviceunder AIM and another chat service under iChat that support group videochat, user B only has a chat service under AIM supporting group videochat and user C only has a chat service under iChat supporting groupvideo chat. Conventionally, this is not possible to start a group videochat since not all of the members have a chat service account under thesame chat system. According to one embodiment, in this example, the chatclient of user A can start two group chat sessions, one with user Bunder AIM and another one with user C under iChat. Once both sessionsstarted, the chat client of user A merges both group chat sessions intoone session. This is can be done because once the sessions start, thechat servers are no longer needed and the chat clients communicate witheach other via point-to-point communications protocols (e.g., using IPaddresses and message ports). In one embodiment, after thepoint-to-point connection has been established, the session initiationprotocol (SIP) or remote desktop protocol (RDP) may be utilized amongthe participants.

Furthermore, during a group chat session hosted by a host member, whenthe host member drops out of the group chat, typically, the group chatis terminated. According to one embodiment, once the existing host dropsout, renegotiation among chat clients of the remaining members isperformed to identify and select a new host member to continue hostingthe group chat session.

FIG. 2 is a block diagram illustrating a chat client according to oneembodiment of the invention. For example, chat client 200 may beimplemented as part of chat clients 106 and/or 107 of FIG. 1. Referringto FIG. 2, chat client 200 includes, but is not limited to, a chatsession controller 201, a chat presence controller 202, chatconfiguration logic 203, a user activity monitor 204, and a chat clientdatabase 205 to store a variety of data such as activity statistics 206,buddy list settings 207, and user preferences 208, etc.

Chat sessions controller 201 is configured to enable a local user toselect to communicate via a chat session with a remote user who islogged on and receiving chat session requests, and to communicate withanother user via a chat session. Additionally, chat sessions controller201 handles received requests from other users requesting communicationwith the local user via a chat session (e.g. chat requests). Uponreceipt of a request from another user to chat with the local user, chatsessions controller 201 may alert the local user to the chat request.

Chat presence controller 202 may broadcast the presence state for thelocal user to a chat server (e.g., chat servers 101-102 of FIG. 1) whichin turn broadcasts the presence state to other users. In addition, chatpresence controller 202 may directly broadcast the presence state forthe local user to another chat client. Chat presence controller 202 isconfigured to enable the local user to select a particular presencestate for broadcast to other users. In one embodiment, chat presencecontroller 202 enables the local user to select a particular presencestate by selecting from among multiple indicators of availability. Chatpresence controller 202 also controls how the presence states for otherusers are output to the local user. In one example, the local user addsuser identifiers to a buddy list, where the buddy list indicates thoseusers whose presence state the local user automatically requests tomonitor. User identifiers added to a buddy list are included in buddylist settings 207. Further, within a buddy list, as stored in buddy listsettings 207, the local user may specify groups of users, such as afamily group, a business group, a friend group, and other user definablegroups.

According to one embodiment, each user in the buddy list settings may beidentified by a user name or buddy name and includes multiple chatservices for one or more chat systems (e.g., AIM, iChat, MSN instantmessenger systems, etc.) In addition, each chat service may furtherinclude information indicating whether the corresponding chat servicesupports certain features such as video chat, etc.

User activity monitor 204 is configured to monitor a variety ofactivities performed by the local user and the statistics of the useractivities may be stored in activity statistics database 206. Suchinformation may be used to infer which of the chat services should beselected to initiate a chat session under certain circumstances. Asdescribed above, when a local user initiates a chat session with aremote user and the local user just finished a phone call with theremote user, the chat session may be initiated over an SMS channelbecause the remote user is most likely with the mobile phone. Such anactivity is monitored by the user activity monitor 204 and used by chatsession controller 201 to determine a best way to reach a remote user.

Chat configuration logic 203 is configured to allow a local user tocustomize user preferences 208 and buddy list settings 207. The chatconfiguration logic 203 may also allow a user to override certainautomatic settings performed by chat client 200. Chat session controller201 is configured to automatically select a chat service of a local userand/or remote user based on a variety of information such as activitystatistics 206, buddy list settings 207, and user preferences 208, asset forth above.

For example, when a local user wishes to initiate a chat session with aremote user, the local user may simply select the username of the remoteuser without having to specifically select a chat service of the remoteuser. In response to the selection, chat session controller 201 mayanalyze all of the chat services associated with the remote user and/orthe local user, as well as the recent activities of the local userand/or remote user, which may be previously collected and/or computed,and stored in activity statistics 206, buddy list settings 207, and userpreferences 208. Based on the analysis, the chat session controller 201may automatically select one of the chat services that is the “best”chat service at the point in time for both local user and remote userfor initiating a chat session. Thereafter, the local user may overridethe automatic selection by the system and the system may “learn” fromthe user manual selection to be used for future selections.

Note that components as shown in FIG. 2 are described for the purpose ofillustration only; more or fewer components may also be implemented.Also note that some or all of the components as shown in FIG. 2 may beimplemented in software, hardware, or a combination of both.

FIGS. 3A-3D are screenshots illustrating an example of a graphical userinterface (GUI) of a chat client according to one embodiment of theinvention. For example, screenshots as shown in FIGS. 3A-3D may bepresented by chat client 200 of FIG. 2. As described above, when a userinitiates a chat session with another user, it is person-to-personcommunications, where a person may have multiple chat service accountsassociated with one or more chat service providers (e.g., AIM, iChat,MSN, etc.). The chat client is configured to intelligently determine thebest way to reach the destination based on a variety of information setforth above. For example, when a local user wishes to initiate a chatsession with a remote user, the local user may simply click or select anicon associated with the remote user.

In this example, as shown in FIG. 3A, the local user selects a remoteuser “Ricci” to initiate a chat session. In this GUI as shown in FIG.3A, the title bar 301 indicates that a chat session is initiated with aremote user “Ricci” by displaying the username “Ricci” in the title bar301. In addition, once “Ricci” is selected, the chat client determinesthe best chat service available for “Ricci.” The chat service may beselected based on prior user activities, buddy list settings, and/oruser preferences information as described above. For example, theselected chat service may be the one most frequently or recently used bythe remote user or the one that the remote user mostly like would acceptthe invitation. Alternatively, the selected chat service may be the onespecifically assigned via the user preference settings. Furthermore, thechat client may determine that the remote user has logged in from homeand therefore, a chat service associated with the home desktop computerof the remote user may be automatically selected, instead of a chatservice account associated with a mobile device.

In this example, an AIM chat service account “ricciadams” isautomatically selected by the chat client. The selected chat serviceaccount 303 and its status are displayed in a recipient bar 302.Additional information 304 is also displayed indicating that the currentchat session is an AIM instant messenger session between a local usersAIM chat service account (e.g., home) and a remote user's chat serviceaccount “ricciadams.” After sending a couple messages 305 to the remoteuser, in this example, the local user determines that the remote usermay not at the computing device associated with the chat service account“ricciadams.

In this situation, the local user may select another chat serviceaccount from a list of available chat service accounts for the remoteuser in an attempt to reach the remote user. In this example, as shownin FIG. 3B, the local user may display (e.g., by clicking on thecurrently selected chat service account 303 of the remote user) a menu306 listing a list of available chat service accounts for both the localuser and the remote user. Specifically, menu 306 includes a “To” section307 and a “From” section 308. The “To” section 307 is used to display alist of chat service accounts of the remote user “Ricci” that areassociated with one or more chat service providers, in this example, AIMand Jabber. Similarly, the “From” section 308 is used to display a listof chat service accounts for the local user. In addition, there is anindicator (e.g., check mark) associated with a currently selected chatservice for the local user (e.g., “home”) and the remote user (e.g.,“ricciadams”).

From menu 306, the local user can select an alternative chat service forthe local user and/or the remote user. In this example, the localselects an alternative chat service account associated with another chatservice provider “Jabber” for the remote user and “iChat” for the localuser, as shown in FIG. 3C. Once the new chat service for the remote userhas been selected, the recipient bar 302 is updated to reflect the newlyselected chat service account at area 303. In addition, information 309is displayed in the chat window indicating that a communication path hasbeen changed with new selected chat service account. The information 309indicates which of the chat service accounts are currently used for boththe local user and the remote user. Similarly, the local user can selectother chat service accounts from the list displayed in the “From”section of the menu, and the communications path changes are displayedin the chat window as shown in FIG. 3D. Note that GUIs as shown in FIGS.3A-3D are described for the illustration purpose only. Other formats ofthe GUIs may also be applied herein.

FIG. 4 is a flow diagram illustrating a method for initiating a chatsession according to one embodiment of the invention. Note that method400 may be performed by processing logic which may include software,hardware, or a combination of both. For example, method 400 may beperformed by chat client 200 of FIG. 2. Referring to FIG. 4, at block401, user activities are monitored by a chat client for both a localuser and a remote user, each having multiple chat services associatedwith one or more chat service providers. The user activities beingmonitored are not limited to chat related activities; activities thatare unrelated to chat are also monitored. At block 402, a request isreceived for initiating a chat session with a remote user. In responsethe request, at block 403, processing logic selects a chat service forthe local user and/or for the remote user, as well as a communicationschannel that is determined the best way to reach the remote user in viewof the monitored activities. At block 404, a chat session is initiatedusing the selected chat services over the selected communicationchannel. At block 405, the selected chat services and the communicationchannel are displayed within the chat window. Other operations may alsobe performed.

FIG. 5 is a flow diagram illustrating a method for initiating a chatsession according to one embodiment of the invention. Note that method500 may be performed by processing logic which may include software,hardware, or a combination of both. For example, method 500 may beperformed by chat client 200 of FIG. 2. Referring to FIG. 5, at block501, a request is received to add a participant to a chat roomassociated with a chat service provider (e.g., AIM) by dragging agraphical representation such as icon of the participant into thecorresponding chat room. For example, a local user may drag an iconrepresenting a chat service associated with the iChat into a currentchat room hosted by an AIM chat server.

In response to the request, at block 502, the processing logicdetermines whether the chat service is associated or compatible with thechat service provider of the current chat room. If not, at block 503,the processing logic automatically selects an alternative chat serviceof the participant that is compatible with the current chat serviceprovider. In the above example, since the current chat room is hosted byAIM chat service provider and the local user drags an iChat chat serviceinto the current chat room, which is incompatible with the AIM chatroom. If the intended participant also has an AIM chat service, theprocessing logic may automatically select the AIM chat service for theparticipant. At block 504, the processing logic sends an invitation tothe participant via the alternative chat service account (e.g., AIM chatservice account in the above example). At block 505, an identifier ofthe selected chat service account of the participant is displayed withinthe chat window. Other operations may also be performed.

FIG. 6 is a flow diagram illustrating a method for initiating a chatsession according to one embodiment of the invention. Note that method600 may be performed by processing logic which may include software,hardware, or a combination of both. For example, method 600 may beperformed by chat client 200 of FIG. 2. Referring to FIG. 6, at block601, a chat session is started between a local user and a remote user.Both the local user and the remote user have multiple chat serviceaccounts associated with one or more chat service providers (e.g., AIMor iChat). At block 602, the chat service accounts selected for the chatsession are displayed within the chat window or within the same instanceof the chat client. At block 603, a request is received for enabling achat feature such as a video chat is received, where the chat feature isnot supported by at least one of the chat service accounts selected forthe current chat session.

In response to the request, at block 604, processing logic automaticallyselects an alternative chat service account from the correspondinguser's list of available chat service accounts to replace theunsupported one. For example, if the remote user's chat service accountselected for the current chat session does not support for a video chat,the processing logic may select an alternative chat service account fromthe remote user's list of service accounts that supports the video chat.The same process is performed for the local user if the local user'scurrent selected chat service account does not support the video chat.At block 605, the current chat session is transitioned to a chat sessionwith the feature enabled using the alternative chat service account oraccounts. At block 606, the changes of the chat service accounts aredisplayed within the chat window or within the same instance of the chatclient. Other operations may also be performed.

FIG. 7 is a flow diagram illustrating a method for initiating a chatsession according to one embodiment of the invention. Note that method700 may be performed by processing logic which may include software,hardware, or a combination of both. For example, method 700 may beperformed by chat client 200 of FIG. 2. Referring to FIG. 7, at block701, a request is received for starting a group video chat session forat least three members, where some of the members have multiple chatservice accounts associated with one or more chat service providers. Atblock 702, processing logic determines whether each member has at leastone chat service account under the same chat service provider thatsupports the group video chat. For example, the processing logic mayexamine the chat service accounts for all members to determine whethereach member has at least one chat service account under AIM. If thereis, the processing logic can simply start a group video chat throughAIM. Otherwise, at block 703, multiple group video chat sessions may bestarted such that each member has at least one chat service account toparticipate at least one of the multiple group video chat sessions. Inthis example, it is assumed that some of the members have a chat serviceaccount under one service provider (e.g., AIM), while other members havea chat service account under another service provider (e.g., iChat).Thus, at least two video chat sessions under AIM and iChat can bestarted, such that each member can participate at least one of the chatsessions. After the multiple chat sessions started, at block 704,processing logic merges the multiple video chat sessions into onesession by directly communicate among the members without involving thecorresponding chat servers. Other operations may also be performed.

FIG. 8 is a flow diagram illustrating a method for initiating a chatsession according to one embodiment of the invention. Note that method800 may be performed by processing logic which may include software,hardware, or a combination of both. For example, method 800 may beperformed by chat client 200 of FIG. 2. Referring to FIG. 8, at block801, a group chat session is started among multiple participants, wherethe group chat session is hosted by one of the participants as a hostingparticipant. At block 802, a request is received from the hostingparticipant indicating that the hosting participant is dropping out ofthe group chat. In response, at block 803, the processing logic causes arenegotiation to be performed among the remaining participants toidentify and select a new hosting participant. At block 804, processinglogic automatically transitions the group chat into one hosted by thenew hosting participant. At block 805, information regarding changingthe host of the group chat session is displayed within the chat window.Other operations may also be performed.

FIG. 9 is a block diagram of a data processing system, which may be usedwith one embodiment of the invention. For example, the system 900 may beused as a client or server system such as client systems 104-105 and/orchat servers 101-102 of FIG. 1. Note that while FIG. 9 illustratesvarious components of a computer system, it is not intended to representany particular architecture or manner of interconnecting the components;as such details are not germane to the present invention. It will alsobe appreciated that network computers, handheld computers, cell phonesand other data processing systems which have fewer components or perhapsmore components may also be used with the present invention. Thecomputer system of FIG. 9 may, for example, be an Apple Macintoshcomputer or MacBook, or an IBM compatible PC.

As shown in FIG. 9, the computer system 900, which is a form of a dataprocessing system, includes a bus or interconnect 902 which is coupledto one or more microprocessors 903 and a ROM 907, a volatile RAM 905,and a non-volatile memory 906. The microprocessor 903 is coupled tocache memory 904. The bus 902 interconnects these various componentstogether and also interconnects these components 903, 907, 905, and 906to a display controller and display device 908, as well as toinput/output (I/O) devices 910, which may be mice, keyboards, modems,network interfaces, printers, and other devices which are well-known inthe art.

Typically, the input/output devices 910 are coupled to the systemthrough input/output controllers 909. The volatile RAM 905 is typicallyimplemented as dynamic RAM (DRAM) which requires power continuously inorder to refresh or maintain the data in the memory. The non-volatilememory 906 is typically a magnetic hard drive, a magnetic optical drive,an optical drive, or a DVD RAM or other type of memory system whichmaintains data even after power is removed from the system. Typically,the non-volatile memory will also be a random access memory, althoughthis is not required.

While FIG. 9 shows that the non-volatile memory is a local devicecoupled directly to the rest of the components in the data processingsystem, the present invention may utilize a non-volatile memory which isremote from the system; such as, a network storage device which iscoupled to the data processing system through a network interface suchas a modem or Ethernet interface. The bus 902 may include one or morebuses connected to each other through various bridges, controllers,and/or adapters, as is well-known in the art. In one embodiment, the I/Ocontroller 909 includes a USB (Universal Serial Bus) adapter forcontrolling USB peripherals. Alternatively, I/O controller 909 mayinclude an IEEE-1394 adapter, also known as FireWire adapter, forcontrolling FireWire devices.

Method and apparatus for initiating and managing chat sessions have beendescribed herein. Some portions of the preceding detailed descriptionshave been presented in terms of algorithms and symbolic representationsof operations on data bits within a computer memory. These algorithmicdescriptions and representations are the ways used by those skilled inthe data processing arts to most effectively convey the substance oftheir work to others skilled in the art. An algorithm is here, andgenerally, conceived to be a self-consistent sequence of operationsleading to a desired result. The operations are those requiring physicalmanipulations of physical quantities. Usually, though not necessarily,these quantities take the form of electrical or magnetic signals capableof being stored, transferred, combined, compared, and otherwisemanipulated. It has proven convenient at times, principally for reasonsof common usage, to refer to these signals as bits, values, elements,symbols, characters, terms, numbers, or the like.

It should be borne in mind, however, that all of these and similar termsare to be associated with the appropriate physical quantities and aremerely convenient labels applied to these quantities. Unlessspecifically stated otherwise as apparent from the above discussion, itis appreciated that throughout the description, discussions utilizingterms such as “monitoring”, “selecting”, “initiating”, “displaying”,“determining”, “sending”, “allowing”, “transitioning”, “enabling”,“merging”, “receiving”, or the like, refer to the action and processesof a computer system, or similar electronic computing device, thatmanipulates and transforms data represented as physical (electronic)quantities within the computer system's registers and memories intoother data similarly represented as physical quantities within thecomputer system memories or registers or other such information storage,transmission or display devices.

Embodiments of the present invention also relate to an apparatus forperforming the operations herein. This apparatus may be speciallyconstructed for the required purposes, or it may comprise ageneral-purpose computer selectively activated or reconfigured by acomputer program stored in the computer. Such a computer program may bestored in a computer readable medium. A machine-readable medium includesany mechanism for storing information in a form readable by a machine(e.g., a computer). For example, a machine-readable (e.g.,computer-readable) medium includes a machine (e.g., a computer) readablestorage medium (e.g., read only memory (“ROM”), random access memory(“RAM”), magnetic disk storage media, optical storage media, flashmemory devices, etc.), etc.

The algorithms and displays presented herein are not inherently relatedto any particular computer or other apparatus. Various general-purposesystems may be used with programs in accordance with the teachingsherein, or it may prove convenient to construct more specializedapparatus to perform the required method operations. The requiredstructure for a variety of these systems will appear from thedescription above. In addition, embodiments of the present invention arenot described with reference to any particular programming language. Itwill be appreciated that a variety of programming languages may be usedto implement the teachings of embodiments of the invention as describedherein.

In the foregoing specification, embodiments of the invention have beendescribed with reference to specific exemplary embodiments thereof. Itwill be evident that various modifications may be made thereto withoutdeparting from the broader spirit and scope of the invention as setforth in the following claims. The specification and drawings are,accordingly, to be regarded in an illustrative sense rather than arestrictive sense.

What is claimed is:
 1. A tangible, non-transitory, machine-readablemedium comprising machine-executable instructions which, when executedby at least one processor of a machine, cause the at least one processorto: receive a first request to participate in a communication sessionvia a first communication service; in response to the first request,initialize the communication session via the first communicationservice; during the communication session, receive a second request toparticipate in the communication session via a second communicationservice; and in response to the second request, transition thecommunication session from the first communication service to the secondcommunication service.
 2. The machine-readable medium of claim 1,wherein the second communication service comprises a communicationfeature, wherein the communication feature is not supported by the firstcommunication service.
 3. The machine-readable medium of claim 1,wherein the first communication service comprises a text-basedcommunication service, wherein the second communication servicecomprises a video feature.
 4. The machine-readable medium of claim 1,wherein the first communication service comprises a voice-basedcommunication service, wherein the second communication servicecomprises a video feature.
 5. The machine-readable medium of claim 1,wherein transitioning the communication session from the firstcommunication service to the second communication service comprises:initializing communication via the second communication service; andending communication via the first communication service.
 6. Themachine-readable medium of claim 1, wherein transitioning from the firstcommunication service to the second communication service comprisestransitioning from a first communication protocol to a secondcommunication protocol.
 7. The machine-readable medium of claim 6,wherein the first communication protocol is a telephonic communicationprotocol and the second communication protocol is an Internetcommunication protocol.
 8. The machine-readable medium of claim 1,wherein transitioning from the first communication service to the secondcommunication service comprises transitioning from a first serviceprovider to a second service provider.
 9. A method comprising:receiving, via a graphic user interface, a first request to participatein a communication session via a first communication service; inresponse to the first request, initializing, via a processor, thecommunication session via the first communication service; during thecommunication session, receiving, via the graphic user interface, asecond request to participate in the communication session via a secondcommunication service; and in response to the second request,transitioning, via the processor, the communication session from thefirst communication service to the second communication service.
 10. Themethod of claim 9, wherein the second communication service comprises acommunication feature that is not supported by the first communicationservice.
 11. The method of claim 9, wherein the first communicationservice comprises a text-based communication feature, wherein the secondcommunication service comprises a video communication feature.
 12. Themethod of claim 9, wherein the first communication service comprises avoice-based communication feature, wherein the second communicationservice comprises a video communication feature.
 13. The method of claim9, wherein transitioning the communication session from the firstcommunication service to the second communication service comprises:initializing communication via the second communication service; andending communication via the first communication service.
 14. The methodof claim 9, wherein transitioning from the first communication serviceto the second communication service comprises transitioning from atelephonic communication protocol to an Internet communication protocol.15. The method of claim 9, wherein transitioning from the firstcommunication service to the second communication service comprisestransitioning from a first service provider to a second serviceprovider.
 16. An electronic device comprising: one or more processors;an electronic display configured to display a graphic user interface;and a tangible, non-transitory, machine-readable medium comprisingmachine-readable instructions, which when executed by the one or moreprocessors, cause the electronic device to: receive, via the graphicuser interface, a first request to participate in a communicationsession via a first communication service; in response to the firstrequest, initialize, via the one or more processors, the communicationsession via the first communication service; during the communicationsession, receive, via the graphic user interface, a second request toparticipate in the communication session via a second communicationservice; and in response to the second request, transition, via the oneor more processors, the communication session from the firstcommunication service to the second communication service.
 17. Theelectronic device of claim 16, wherein the first communication servicecomprises a text-based communication service, wherein the secondcommunication service comprises a video communication service.
 18. Theelectronic device of claim 16, wherein transitioning from the firstcommunication service to the second communication service comprisestransitioning from a first communication protocol to a secondcommunication protocol.
 19. The electronic device of claim 16, whereintransitioning from the first communication service to the secondcommunication service comprises transitioning from a first serviceprovider to a second service provider.
 20. The electronic device ofclaim 16, wherein transitioning the communication session from the firstcommunication service to the second communication service comprisesinitializing communication via the second communication service beforeending communication via the first communication service.